#include <my_header.h>

/* Usage: ./3_chdir pathname */
int main(int argc, char *argv[]){                                  
    ARGS_CHECK(argc, 2);    // 命令行参数必须是两个，第二个是要切换的目录
    // 执行父进程
    // 获取当前目录
    // 使用栈空间
    char buf[1024] = { 0 };
    char *ret = getcwd(buf, sizeof(buf));
    ERROR_CHECK(ret, NULL, "getcwd");
    printf("之前的工作目录是：");
    puts(buf);

    // 改变当前工作目录
    int ret_chg = chdir(argv[1]);
    ERROR_CHECK(ret_chg, -1, "chdir");
    // 执行子进程
    // 打印当前工作目录
    char *ret_dir = getcwd(buf, sizeof(buf));
    ERROR_CHECK(ret_dir, NULL, "getcwd");
    printf("chdir后的工作目录是：");
    puts(buf);
    // 执行完毕最终不会改变工作目录 继承的是父进程的工作目录
    // 在子进程修改工作目录不会影响到父进程
    // 父进程的之前的工作目录是：/home/wuhaonan/start_class/day_linux_CDay06_目录流/系统调用函数
    // 子进程chdir后的工作目录是：/home/wuhaonan/start_class/day_linux_CDay06_目录流/系统调用函数/dir
    return 0;
}

/*
 *#include <unistd.h>
int chdir(const char *path);

形式参数：

1. path: 是一个指向字符数组的指针，这个数组包含了新工作
目录的路径。
2. 路径可以是绝对的（从根目录开始，例如 "/usr/local/bin"）
或相对的（相对于当前工作目录，例如 "../docs"）。
返回值：

1. 成功时，chdir 返回 0。
2. 失败时，返回 -1，并设置全局变量 errno 以指示错误的原
因。比较常见的错误，比如目标目录不存在、权限问题、目
标不是目录等。
 *
 * */
